package a0_waittandnotify;

public class cook extends Thread{
    /* 生产者
    1 写循环->同步代码块->判断->生产->唤醒消费者
    2 加锁
    3 判断
    4 生产
    5 唤醒消费者
     */
    @Override
    public void run() {
        while (true){
            //只有持有desk.lock对象监视器锁的线程才能调用其wait()/notifyAll()方法
            synchronized(desk.lock) {
                if (desk.count == 0) {
                    break;
                } else {
                    if (desk.foodFlag == 1) {
                        try {
                            desk.lock.wait();//有饭,等待
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    } else {
                        //生产
                        System.out.println("厨师正在做面条");
                        //修改桌面状态
                        desk.foodFlag = 1;
                        //唤醒消费者
                        desk.lock.notifyAll();
                    }
                }
            }
        }
    }
}
